/* 模块包装器：
    1.保持顶层的变量（用 var、 const 或 let 定义）作用在模块范围内，而不是全局对象。   

    2.它有助于提供一些看似全局的但实际上是模块特定的变量
*/

/* 
module变量：该变量的对应取值，是对应的模块加载时候才进行构建的
            构建的值只会和当前模块文件有关，取值的内容每个模块是不同的
            该变量在构建时候被赋予数据，是当前模块的相关系统和环境信息
            所以可以直接认为node环境下该变量就是模块的身份信息对象 */
/* Module {
    id: '模块的唯一识别',
    path: '模块加载路径，不带后缀名',
    exports: {当前公开的数据},
    parent: 父模块的相关信息,
    filename: '模块加载路径，带后缀名',
    loaded:当前模块是否被加载 ,
    children: [当前模块加载的子模块],
    paths: [
        搜索路径
    ]
  } */
 
  const moduleA=require("./module3/moduleA");
  moduleA.printDirName();
  console.log("05.js中的module",module);